超详细!Docker Compose 一键部署 Apache Doris,新手也能上手

28次阅读
没有评论

Apache Doris 作为一款高性能、实时分析型数据库,凭借其极速查询、简单部署的优势,成为大数据分析场景的热门选择。但传统部署方式需要配置环境、依赖,步骤繁琐,对新手不太友好。今天就给大家分享一种更高效的部署方式——使用 Docker Compose 一键搭建 Doris 单机测试环境,无需复杂配置,几分钟就能完成部署,适合开发、测试和新手入门学习。

先说明一点:本文部署的是 Doris 单机版(1个 FE + 1个 BE),仅适用于开发、测试环境,生产环境建议使用裸机、虚拟机或 K8s 部署,保障数据可靠性和性能稳定性。

一、前置准备(必看!)

部署前需确保宿主机已安装好 Docker 和 Docker Compose,且版本满足要求,同时做好环境参数配置,避免后续启动失败。

1. 环境版本要求

  • Docker:v20.0 及以上
  • Docker Compose:v2.0 及以上
  • 操作系统:建议使用 Ubuntu、CentOS 等主流 Linux 系统(Windows、Mac 可用于测试,但体验不如 Linux)
  • 内存:至少 4GB(推荐 8GB 及以上,避免因内存不足导致容器启动失败)

2. 检查 Docker 与 Docker Compose 是否安装

打开终端,执行以下命令,若能正常输出版本号,说明已安装成功;若未安装,需先参考官方文档完成安装。

# 检查 Docker 版本
docker --version

# 检查 Docker Compose 版本
docker-compose --version

3. 配置宿主机环境参数

Doris 运行需要调整宿主机的虚拟内存和文件描述符限制,否则可能出现 BE 启动失败等问题,执行以下命令完成配置(临时生效,重启宿主机后需重新执行,若需永久生效可参考文末补充说明):

# 调整虚拟内存(关键!)
sudo sysctl -w vm.max_map_count=2000000

# 关闭 swap 分区(可选,提升性能)
swapoff -a

# 调整文件描述符限制
ulimit -n 60000

二、开始部署:Docker Compose 一键启动 Doris

整个部署过程分为 3 步:创建部署目录 → 编写 docker-compose.yml 文件 → 启动服务,全程复制命令即可完成,非常简单。

1. 创建部署目录

创建一个专门的 Doris 部署目录,用于存放配置文件、数据和日志,方便后续管理和维护:

# 创建主目录
mkdir -p ~/doris-deploy
# 进入目录
cd ~/doris-deploy

# 创建 FE、BE 数据和日志目录(实现数据持久化,避免容器删除后数据丢失)
sudo mkdir -p /opt/doris/fe/{doris-meta,log}
sudo mkdir -p /opt/doris/be/{storage,log}

# 赋予目录读写权限(避免容器写入数据失败)
sudo chown -R $(whoami):$(whoami) /opt/doris/

2. 编写 docker-compose.yml 配置文件

在 doris-deploy 目录下,创建 docker-compose.yml 文件,复制以下内容粘贴(建议使用 Doris 3.1.4 版本,稳定性较高,适配 Docker Compose 部署):

version: '3.8'
services:
  # Doris FE(Frontend,前端节点,负责元数据管理、SQL 解析)
  doris-fe:
    image: apache/doris:fe-3.1.4
    container_name: doris-fe
    hostname: doris-fe
    privileged: true
    environment:
      - FE_SERVERS=fe1:172.18.0.10:9010  # FE 节点信息,格式:节点名:IP:RPC端口
      - FE_ID=1  # FE 节点 ID,单机版固定为 1
      - TZ=Asia/Shanghai  # 时区配置,避免时间错乱
    volumes:
      - /opt/doris/fe/doris-meta:/opt/apache-doris/fe/doris-meta  # 挂载 FE 元数据目录
      - /opt/doris/fe/log:/opt/apache-doris/fe/log  # 挂载 FE 日志目录
    ports:
      - "8030:8030"  # FE Web UI 端口(用于管理)
      - "9030:9030"  # MySQL 协议端口(用于连接 Doris 执行 SQL)
      - "9010:9010"  # FE RPC 端口(用于与 BE 通信)
    networks:
      doris-net:
        ipv4_address: 172.18.0.10  # 固定 FE IP,避免通信异常
    restart: always  # 容器异常时自动重启

  # Doris BE(Backend,后端节点,负责数据存储和计算)
  doris-be:
    image: apache/doris:be-3.1.4
    container_name: doris-be
    hostname: doris-be
    privileged: true
    environment:
      - FE_SERVERS=fe1:172.18.0.10:9010  # 关联 FE 节点,与上方 FE 配置一致
      - BE_ADDR=172.18.0.11:9050  # BE 节点地址,格式:IP:BRPC端口
      - TZ=Asia/Shanghai
    volumes:
      - /opt/doris/be/storage:/opt/apache-doris/be/storage  # 挂载 BE 数据存储目录
      - /opt/doris/be/log:/opt/apache-doris/be/log  # 挂载 BE 日志目录
    ports:
      - "8040:8040"  # BE Web UI 端口
      - "9050:9050"  # BE BRPC 端口(与 FE 通信)
      - "8060:8060"  # BE 心跳端口
    depends_on:
      - doris-fe  # 确保 FE 先启动,再启动 BE
    networks:
      doris-net:
        ipv4_address: 172.18.0.11  # 固定 BE IP
    restart: always

# 自定义 Docker 网络(桥接模式,避免端口冲突和通信问题)
networks:
  doris-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16  # 子网,与 FE、BE IP 匹配

3. 启动 Doris 服务

在 doris-deploy 目录下,执行以下命令,Docker Compose 会自动拉取 Doris 镜像、创建容器并启动服务:

docker-compose up -d

执行命令后,会看到“Creating network doris-net”“Pulling doris-fe”“Starting doris-fe”等提示,耐心等待即可(镜像拉取速度取决于网络,大概 5-10 分钟)。

查看容器启动状态,确认 FE 和 BE 都处于运行中:

docker-compose ps

若 STATUS 列显示“Up”,说明容器启动成功;若显示“Exited”,需查看日志排查问题(下文有排查方法)。

三、验证部署:确认 Doris 正常运行

部署完成后,我们通过两种方式验证 Doris 是否正常工作:Web UI 访问 + MySQL 客户端连接。

1. 访问 FE Web UI

打开浏览器,输入地址:http://宿主机IP:8030(比如宿主机 IP 是 192.168.1.100,就输入 http://192.168.1.100:8030)。

默认无需登录,直接进入管理界面,可看到 FE 节点状态为“Alive”,说明 FE 运行正常。

2. 使用 MySQL 客户端连接 Doris

Doris 支持 MySQL 协议,可直接使用 MySQL 客户端(如 Navicat、MySQL 命令行)连接,默认无密码。

# 命令行连接(需宿主机安装 MySQL 客户端)
mysql -h 127.0.0.1 -P 9030 -uroot

连接成功后,执行以下 SQL 命令,测试 Doris 功能是否正常(创建数据库、表、插入数据、查询数据):

-- 创建测试数据库
CREATE DATABASE test_db;

-- 切换到测试数据库
USE test_db;

-- 创建测试表(Doris 自定义 OLAP 引擎)
CREATE TABLE test_table (
  id INT,
  name VARCHAR(50),
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=OLAP
DISTRIBUTED BY HASH(id) BUCKETS 10  -- 按 id 哈希分区,10 个分桶
PROPERTIES (
  "replication_num" = "1"  -- 单机版副本数为 1,生产环境建议 3
);

-- 插入测试数据
INSERT INTO test_table VALUES (1, 'Doris', NOW()), (2, 'Docker', NOW());

-- 查询数据
SELECT * FROM test_table;

若能正常执行以上 SQL,且查询到插入的数据,说明 Doris 部署成功,可正常使用。

四、常用操作:停止、重启、查看日志

后续使用过程中,常用的操作命令整理如下,直接复制执行即可:

# 停止 Doris 服务(不删除容器和数据)
docker-compose down

# 启动 Doris 服务(已创建容器时使用)
docker-compose up -d

# 重启 Doris 服务
docker-compose restart

# 查看 FE 日志(排查 FE 启动失败问题)
docker logs -f doris-fe

# 查看 BE 日志(排查 BE 启动失败问题)
docker logs -f doris-be

# 进入 FE 容器内部
docker exec -it doris-fe /bin/bash

# 进入 BE 容器内部
docker exec -it doris-be /bin/bash

五、常见问题排查(新手必看)

部署过程中,可能会遇到一些小问题,这里整理了最常见的 3 种情况及解决方法:

1. BE 容器启动后立即退出

原因:大概率是宿主机虚拟内存未配置(vm.max_map_count 不足),或目录权限不足。

解决方法:重新执行前置准备中的环境参数配置命令,或赋予目录权限:

sudo chmod -R 777 /opt/doris/

2. 连接 MySQL 客户端失败

原因:FE 容器未正常启动,或端口被占用,或宿主机防火墙拦截 9030 端口。

解决方法:

  • 查看 FE 容器状态:docker ps | grep doris-fe,若未运行,重启 FE 容器。
  • 检查 9030 端口是否被占用:netstat -tuln | grep 9030,若被占用,修改 docker-compose.yml 中 FE 的端口映射(如改为 9031:9030)。
  • 关闭宿主机防火墙(测试环境):sudo systemctl stop firewalld

3. BE 节点未注册到 FE

原因:FE 与 BE 不在同一个 Docker 网络,或 FE_SERVERS 配置错误。

解决方法:检查 docker-compose.yml 中 networks 配置,确保 FE 和 BE 都在 doris-net 网络中,且 FE_SERVERS 中的 IP 与 FE 的 ipv4_address 一致。

六、补充说明

  1. 数据持久化:本文通过挂载 /opt/doris 目录实现数据持久化,即使删除容器,数据也不会丢失;若无需持久化,可删除 volumes 相关配置(不推荐)。
  2. 版本选择:本文使用 Doris 3.1.4 版本,若需使用其他版本,可修改 docker-compose.yml 中的镜像标签(如 apache/doris:fe-4.0.2、apache/doris:be-4.0.2)。
  3. 生产环境建议:Docker Compose 部署仅适用于测试和开发,生产环境需部署多节点集群,配置数据备份,避免单点故障和数据丢失。
  4. 永久配置环境参数:若需让 vm.max_map_count 永久生效,编辑 /etc/sysctl.conf 文件,添加 vm.max_map_count=2000000,然后执行 sysctl -p 生效。

总结

相比传统部署方式,使用 Docker Compose 部署 Doris 无需手动配置依赖、环境变量,只需编写一份配置文件,一键即可启动整个服务,极大简化了部署流程,非常适合新手入门和快速测试。

按照本文步骤操作,几分钟就能搭建好 Doris 测试环境,后续可基于此环境学习 Doris 的 SQL 操作、数据导入、查询优化等功能。如果遇到其他问题,欢迎在评论区留言交流~

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码